var File = Ext.data.Record.create([{
			name : 'id',
			mapping : 'id',
			type : 'int'
		}, {
			name : 'orgId',
			mapping : 'orgId',
			type : 'int'
		}, {
			name : 'folder',
			mapping : 'folder',
			type : 'string'
		}, {
			name : 'title',
			mapping : 'title',
			type : 'string'
//		}, {
//			name : 'content',
//			mapping : 'content',
//			type : 'string'
		}, {
			name : 'filePath',
			mapping : 'filePath',
			type : 'string'
		}, {
			name : 'status',
			mapping : 'status',
			type : 'string'
		}, {
			name : 'memo',
			mapping : 'memo',
			type : 'string'
		}]);
var cm_file = new Ext.grid.ColumnModel([new Ext.grid.CheckboxSelectionModel({singleSelect : false}), new Ext.grid.RowNumberer({
				header : '序号',
				width : 40
			}), {
			id : 'orgId',
			header : '部门名称',
			width : 90,
			dataIndex : 'orgId',
			sortable : true,
			renderer : function(v) {
				var ret = '';
				var size = ds_org_select.getCount();
				for (var i = 0; i < size; i++) {
					var record = ds_org_select.getAt(i);
					var id = record.get('id');
					if (id == v) {
						ret = record.get('name');
						break;
					}
				}
				return (ret == '' || ret == null) ? v : ret;
			}
		}, {
			id : 'folder',
			header : '文件夹',
			width : 60,
			dataIndex : 'folder',
			menuDisabled : true,
			editor : new Ext.form.TextField({
					maxLength : 70
				}),
			renderer : fun_getFileFolder
		}, {
			id : 'title',
			header : '标题',
			width : 200,
			dataIndex : 'title',
			menuDisabled : true
		}, {
			id : 'filePath',
			header : '文件',
			width : 200,
			dataIndex : 'filePath',
			menuDisabled : true
		}, {
			id : 'status',
			header : '状态',
			width : 60,
			dataIndex : 'status',
			menuDisabled : true,
			editor : new Ext.form.TextField({
					maxLength : 70
				}),
			renderer : function(v) {
				var ret = '';
				switch (v) {
					case 'publish_no' :
						ret = '未发布';
						break
					case 'publish_yes' :
						ret = '已发布';
						break
					default :
				}
				return ret;
			}
		}, {
			width : 200,
			header : '备注',
			id : 'memo',
			dataIndex : 'memo',
			menuDisabled : true,
			editor : new Ext.form.TextField({
					maxLength : 200
				})
		}]);


var window_add_file = new Ext.Window({
		title : '添加文件',
		width : 480,
		height : 620,
		resizable : false,
		autoHeight : true,
		modal : true,
		closeAction : 'hide',
//        plain: true,
		listeners : {
			'hide' : function() {
				this.setTitle('添加文件'); 
				Ext.getCmp("form_add_file").getForm().reset();
			}
		},
		items : [new Ext.FormPanel({
				id : 'form_add_file',
				labelWidth : 80,
				labelAlign : 'right',
				url : '/supervise/biz/file/saveFile.action',
				border : false,
				baseCls : 'x-plain',
				bodyStyle : 'padding:5px 5px 0',
				defaults : {
					anchor : '90%',
					width : 240,
					msgTarget : 'side'
				},
				defaultType : 'textfield',
				fileUpload : true,
				items : [{
							xtype : 'hidden',
							name : 'file.id'
						}, {
							xtype : 'combo',
							fieldLabel : '<span style="color: red">*&nbsp;</span>所属部门',
							hiddenName : 'file.orgId',
							valueField : 'id',
							displayField : 'name',
							mode : 'remote',
							store : ds_org_select,
							selectOnFocus : true,
							editable : false,
							allowBlank : false,
							triggerAction : 'all',
							loadingText : '加载中...',
							emptyText : '请选择部门',
							listeners : {
								'select' : function(combo, record, index) {
									var frm = Ext.getCmp("form_add_file").getForm();
									frm.findField('file.orgId').setValue(record.data.id);
								}
							}
						}, {
							xtype : 'combo',
							fieldLabel : '<span style="color: red">*&nbsp;</span>文件夹',
							mode : 'local',
							name : 'file_type',
							hiddenName : 'file.folder',
							editable : false,
							allowBlank : false,
							store : new Ext.data.SimpleStore({
									data : data_file_folder,
									fields : ['text', 'value']
								}),
							displayField : 'text',
							valueField : 'value',
							mode : 'local',
							triggerAction : 'all',
							emptyText : '请选择文件夹'
						}, {
							fieldLabel : '<span style="color: red">*&nbsp;</span>标题',
							name : 'file.title',
							grow : false,
							allowBlank : false,
							blankText : "这个字段最好不要为空",
							msgTarget : 'under'
						}, {
							xtype : 'hidden',
		//					fieldLabel : '状态',
							name : 'file.status',
							value : 'publish_no'
						}, {
							xtype : 'textarea',
							fieldLabel : '备注',
							name : 'file.memo',
							maxLength : 200
//						}, {
//							width : 600,
//							height : 200,
////							id : "file.content",
//							name : "file.content",
//							fieldLabel : "信息内容",
//							xtype : 'fckeditor'
						}, {
							xtype : 'hidden',
							name : 'file.filePath'
						}, {
							height : 24,
							width : 400,
							xtype : 'textfield',
							fieldLabel : '文件',
							name : 'doc',
							inputType : 'file',// 文件
							renderer : function(v) {
								var frm = Ext.getCmp("form_add_file").getForm();
								var f = frm.findField('file.filePath').getValue();
								frm.findField('doc').setValue(f);
							}
						}],
				buttonAlign : 'center',
				minButtonWidth : 60,
				buttons : [{
							text : '确定',
							handler : function(btn) {
								var frm = Ext.getCmp("form_add_file").getForm();
								if (frm.isValid()) {
									btn.disable();
									var dnfield = frm.findField('cms.title');
									frm.submit({
												waitTitle : '请稍候',
												waitMsg : '正在提交表单数据,请稍候...',
												timeout : 600000,
												success : function(form, action) {
													var fileName = action.result.entity.filePath;
													var store = grid_file.getStore();
													if (store.data.length <= 20) {
														var file = new File({
															id : action.result.id,
															orgId : form.findField('file.orgId').getValue(),
															folder : form.findField('file.folder').getValue(),
															title : form.findField('file.title').getValue(),
															// content :
															// form.findField('file.content').getValue(),
															 memo :  form.findField('file.memo').getValue(),
															 status : form.findField('file.status').getValue(),
															 filePath : fileName
														});
														store.insert(0, [file]);
														if (store.data.length > 20) {
															store.remove(store.getAt(store.data.length - 1));
														}
													}
													grid_file.getView().refresh();
													frm.reset();
													btn.enable();
													window_add_file.hide();
												},
												failure : function() {
													Ext.Msg.show({
																title : '错误提示',
																msg : '"' + dnfield.getValue() + '" ' + '名称可能已经存在!',
																buttons : Ext.Msg.OK,
																fn : function() {
																	dnfield.focus(true);
																	btn.enable();
																},
																icon : Ext.Msg.ERROR
															});
												}
											});
								}
							}
						}, {
							text : '重置',
							handler : function() {
								Ext.getCmp("form_add_file").getForm().reset();
							}
						}, {
							text : '取消',
							handler : function() { 
								window_add_file.hide();
							}
						}]
			})]
	});
var form_edit_file = new Ext.form.FormPanel({
		id : 'form_edit_file',
		labelWidth : 80,
		labelAlign : 'right',
		url : '/supervise/biz/file/saveFile.action',
		border : false,
		baseCls : 'x-plain',
		bodyStyle : 'padding:5px 5px 0',
		defaults : {
			anchor : '90%',
			width : 240,
			msgTarget : 'side'
		},
		defaultType : 'textfield',
		fileUpload : true,
		items : [{
					xtype : 'hidden',
					name : 'file.id'
				}, {
					xtype : 'combo',
					fieldLabel : '<span style="color: red">*&nbsp;</span>所属部门',
					hiddenName : 'file.orgId',
					valueField : 'id',
					displayField : 'name',
					mode : 'remote',
					store : ds_org_select,
					selectOnFocus : true,
					editable : false,
					allowBlank : false,
					triggerAction : 'all',
					loadingText : '加载中...',
					emptyText : '请选择部门',
					listeners : {
						'select' : function(combo, record, index) {
							var frm = Ext.getCmp("form_add_file").getForm();
							frm.findField('file.orgId').setValue(record.data.id);
						}
					}
				}, {
					xtype : 'combo',
					fieldLabel : '<span style="color: red">*&nbsp;</span>文件夹',
					mode : 'local',
					name : 'file_folder',
					hiddenName : 'file.folder',
					editable : false,
					allowBlank : false,
					store : new Ext.data.SimpleStore({
							data : data_file_folder,
							fields : ['text', 'value']
						}),
					displayField : 'text',
					valueField : 'value',
					mode : 'local',
					triggerAction : 'all',
					emptyText : '请选择文件夹'
				}, {
					fieldLabel : '<span style="color: red">*&nbsp;</span>标题',
					name : 'file.title',
					grow : false,
					allowBlank : false,
					blankText : "这个字段最好不要为空",
					msgTarget : 'under'
				}, {
					xtype : 'hidden',
//					fieldLabel : '状态',
					name : 'file.status',
					value : 'publish_no'
				}, {
					xtype : 'textarea',
					fieldLabel : '备注',
					name : 'file.memo',
					maxLength : 200
//				}, {
//					width : 600,
//					height : 200,
////					id : "file.content",
//					name : "file.content",
//					fieldLabel : "信息内容",
//					xtype : 'fckeditor'
				}, {
					xtype : 'hidden',
					name : 'file.filePath'
				}, {
					height : 24,
					width : 400,
					xtype : 'textfield',
					fieldLabel : '文件',
					name : 'doc',
					inputType : 'file',// 文件
					renderer : function(v) {
						var frm = Ext.getCmp("form_edit_file").getForm();
						var f = frm.findField('file.filePath').getValue();
						frm.findField('doc').setValue(f);
					}
				},{
					width : 200,
					x : 100, 
					xtype : 'label',
					iconCls : 'icon-nav',
					html  : "<a href='javascript:void(0)'>查看文件</a>",
					id : 'view_filePath'
				}],
		buttonAlign : 'center',
		minButtonWidth : 60,
		buttons : [{
					text : '确定',
					handler : function(btn) {
						var frm = Ext.getCmp("form_edit_file").getForm();
						if (frm.isValid()) {
							btn.disable();
							// var dnfield = frm.findField('file.name');
							frm.submit({
										waitTitle : '请稍候',
										waitMsg : '正在提交表单数据,请稍候...',
										timeout : 600000,
										success : function(form, action) {
//											alert(action);
											var record = grid_file.getSelectionModel().getSelected();
											var fileName = action.result.entity.filePath;
											// set value
											record.set("orgId", frm.findField('file.orgId').getValue());
											record.set("folder", frm.findField('file.folder').getValue());
											record.set("title", frm.findField('file.title').getValue());
//											record.set("filePath", fileName);
											record.set("status", frm.findField('file.status').getValue());
//											record.set("content", frm.findField('file.content').getValue());
											record.set("memo", frm.findField('file.memo').getValue());
											record.commit();
											frm.reset();
											btn.enable();
											window_edit_file.hide();
										},
										failure : function() {
											Ext.Msg.show({
														title : '错误提示',
														msg : '"' + dnfield.getValue() + '" ' + '名称可能已经存在!',
														buttons : Ext.Msg.OK,
														fn : function() {
															dnfield.focus(true);
															btn.enable();
														},
														icon : Ext.Msg.ERROR
													});
										}
									});
						}
					}
				}, {
					text : '取消',
					handler : function() {
						window_edit_file.hide();
					}
				}]
	});
var window_edit_file = new Ext.Window({
		title : '修改信息',
		width : 480,
		height : 620,
		resizable : false,
		autoHeight : true,
		modal : true,
		closeAction : 'hide',
		listeners : {
			'hide' : function() {
				this.setTitle('修改信息');
			    Ext.getCmp("form_edit_file").getForm().reset();
			}
		},
		items : form_edit_file
	});

var btn_add_file = new Ext.Button({
		text : '添加',
		iconCls : 'icon-add',
		handler : function() {
			window_add_file.show(this);
			window_add_file.center();
		}
	});

var btn_edit_file = new Ext.Button({
		text : '修改',
		iconCls : 'icon-edit',
		handler : function() {
			if (!grid_file.checkOne()) {
				return;
			}
			window_edit_file.show(this);
			window_edit_file.center();
			var record = grid_file.getSelectionModel().getSelected();
			// Ext.getCmp("form_edit_file").getForm().loadRecord(record);
			var frm = Ext.getCmp("form_edit_file").getForm();
			// set value
			frm.findField('file.id').setValue(record.get("id"));
			frm.findField('file.orgId').setValue(record.get("orgId"));
			frm.findField('file.folder').setValue(record.get("folder"));
			frm.findField('file.title').setValue(record.get("title"));
			frm.findField('file.filePath').setValue();
			frm.findField('file.status').setValue(record.get("status"));
//			frm.findField('file.content').setValue(record.get("content"));
			frm.findField('file.memo').setValue(record.get("memo"));
			//set attach file
			
			var view_filePath = Ext.getCmp("view_filePath");
			var file_path = record.get("filePath");
			var folder = record.get("folder");
			if(!Ext.isEmpty(folder)){
				folder =  folder + '/' ;
			} else {
				folder = '';
			}
			if(view_filePath && file_path) {
				var htmlValue =  "<a href='" + ('/supervise/upload/' + folder + file_path) +  "' target='_blank'>查看文件</a>";
				view_filePath.setText(htmlValue,false);
			}
		}
	});
var btn_del_file = new Ext.Button({
		text : '删除',
		iconCls : 'icon-del',
		handler : function() {
			if (!grid_file.checkOne()) {
				return;
			}
			var record = grid_file.getSelectionModel().getSelected();
			if (record) {
				Ext.Msg.confirm('确认删除', '你确定删除该条记录?', function(btn) {
							if (btn == 'yes') {
								Ext.Ajax.request({
											url : '/supervise/biz/file/deleteFile.action',
											params : {
												id : record.data.id
											},
											success : function() {
												grid_file.getStore().remove(record);
												grid_file.getView().refresh();
											},
											failure : function() {
												Ext.Msg.show({
															title : '错误提示',
															msg : '删除时发生错误!',
															buttons : Ext.Msg.OK,
															icon : Ext.Msg.ERROR
														});
											}
										});
							}
						});
			}
		}
	});
var btn_publish_file = new Ext.Button({
	text : '发布',
	iconCls : 'icon-add',
	handler : function() {
		if(!grid_file.checkMany()){
			return;
		}
		var records = grid_file.getSelectionModel().getSelections();
		var ids = [];
		for(var i = 0, count = records.length; i < count; i++){
			ids.push(records[i].get('id'));
		}
	//		提交保存数据
		Ext.getBody().mask("数据正在提交，请稍等...","x-mask-loading"); 
		Ext.Ajax.request({
			url : '/supervise/biz/file/publish.action',
			success : function(response, options) {
				Ext.getBody().unmask();
				grid_file.getStore().reload();
				Ext.Msg.alert('提示', '成功发布数据！');
			 
			},
			failure : function() {
				Ext.getBody().unmask();
				window_edit_goalcategory.hide();
				Ext.Msg.alert('提示', '数据保存失败！');
			},
			params : {
				ids : ids.join(',')
			}
		});
	}
});
var btn_recall_file = new Ext.Button({
	text : '撤消',
	iconCls : 'icon-del',
	handler : function() {
		if(!grid_file.checkMany()){
			return;
		}
		var records = grid_file.getSelectionModel().getSelections();
		var ids = [];
		for(var i = 0, count = records.length; i < count; i++){
			ids.push(records[i].get('id'));
		}
	//		提交保存数据
		Ext.getBody().mask("数据正在提交，请稍等...","x-mask-loading"); 
		Ext.Ajax.request({
			url : '/supervise/biz/file/recall.action',
			success : function(response, options) {
				Ext.getBody().unmask();
				grid_file.getStore().reload();
			 	Ext.Msg.alert('提示', '成功撤消发布！');
			},
			failure : function() {
				Ext.getBody().unmask();
				window_edit_goalcategory.hide();
				Ext.Msg.alert('提示', '数据保存失败！');
			},
			params : {
				ids : ids.join(',')
			}
		});
	}
});
var searchfile = function() {
	ds_file.baseParams.searchField = 'title';
	ds_file.baseParams.searchValue = text_search_file.getValue();
	ds_file.load({
				params : {
					start : 0,
					limit : 20
				}
			});
}

var btn_search_file = new Ext.Button({
		text : '查询',
		iconCls : 'icon-search',
		handler : searchfile
	});

var text_search_file = new Ext.form.TextField({
		name : 'textSearchTitle',
		width : 200,
		emptyText : '请输入文件标题查询!',
		listeners : {
			'specialkey' : function(field, e) {
				if (e.getKey() == Ext.EventObject.ENTER) {
					searchfile();
				}
			}
		}
	});

var ds_file = new Ext.data.Store({
		proxy : new Ext.data.HttpProxy({
				url : '/supervise/biz/file/findAllFile.action'
			}),
		reader : new Ext.data.JsonReader({
				totalProperty : 'totalProperty',
				root : 'root'
			}, [{
						name : 'id',
						type : 'int'
					}, {
						name : 'orgId',
						type : 'int'
					}, {
						name : 'folder',
						type : 'string'
					}, {
						name : 'title',
						type : 'string'
					}, {
						name : 'filePath',
						type : 'string'
					}, {
						name : 'status',
						type : 'string'
//					}, {
//						name : 'content',
//						type : 'string'
					}, {
						name : 'memo',
						type : 'string'
					}])
	});
var grid_file = new Ext.grid.GridPanel({
		title : '相关文件',
		iconCls : 'icon-plugin',
		region : 'center',
		loadMask : {
			msg : '数据加载中...'
		},
		height : 600,
		cm : cm_file,
		ds : ds_file,
		sm : new Ext.grid.CheckboxSelectionModel({
				singleSelect : false
			}),
		enableColumnMove : false,
		trackMouseOver : false,
		frame : true,
		autoExpandColumn : 'memo',
		tbar : [btn_add_file, '-', btn_edit_file, '-', btn_del_file, '-', btn_publish_file,
			'-', btn_recall_file, '->',text_search_file, btn_search_file],
		bbar : new Ext.PagingToolbar({
				pageSize : 20,
				store : ds_file,
				displayInfo : true,
				displayMsg : '第 {0} - {1} 条  共 {2} 条',
				emptyMsg : "没有记录"
			}),
		// 检测至少选择一个
		checkOne : function() {
			var selections = this.getSelectionModel().getSelections();
			if (selections.length == 0) {
				Ext.MessageBox.alert("提示", "请选择一条的记录！");
				return false;
			} else if (selections.length != 1) {
				Ext.MessageBox.alert("提示", "不能选择多行！");
				return false;
			}
			return true;
		},

		// 检测必须选择一个
		checkMany : function() {
			var selections = this.getSelectionModel().getSelections();
			if (selections.length == 0) {
				Ext.MessageBox.alert("提示", "请至少选择一条的记录！");
				return false;
			}
			return true;
		},
	listeners : {
			'render' : function(e) {
				ds_file.load({
					params : {
						start : 0,
						limit : 20
					}
				});
			}
		}
	});

var p_file = {
	id : 'file-panel',
	border : false,
	layout : 'border',
	items : [grid_file]
}
